package cn.itcast.controller.system;


import cn.itcast.controller.BaseController;
import cn.itcast.domain.system.FeedBack;
import cn.itcast.domain.system.User;
import cn.itcast.service.system.FeedService;
import com.github.pagehelper.PageInfo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/***
 * 关于留言的操作
 *    1.用户新增留言
 *    2.留言查询
 *       3.1 企业管理员 ：根据companyId查询本企业下的所有留言，并进行处理(留言者的companyId=该企业管理员的companyId)
 *       3.2 SaaS管理员 ：根据degree查询所有企业管理员的留言，并进行处理（degree=1）
 *    3.相关领导回复留言（修改）
 */
@RequestMapping("/system/feed")
@Controller
public class FeedController  extends BaseController {

    @Autowired
    private FeedService feedService;

    /**
     * 点击留言管理--跳转到留言页面，同时把该用户的相关信息带到request域中
    */
    @RequiresPermissions("反馈管理")
    @RequestMapping(value = "/leaveMessage",name  = "跳转到添加留言页面")
    public  String  leaveMessage(){

       request.setAttribute("fbpEmail",getUser().getEmail());
       request.setAttribute("fbpUsername",getUser().getUserName());
       request.setAttribute("fbpTelephone",getUser().getTelephone());
       request.setAttribute("fbCompanyId",getUser().getCompanyId());
       request.setAttribute("fbDegree",getUser().getDegree());
       return  "system/feedback/leave-message";
    }

     /**
     * 1.用户新增留言---已成功
     */
    @RequiresPermissions("反馈管理")
    @RequestMapping(value = "/addLeaveMessage",name = "添加留言")
    public  String  addLeaveMessage(FeedBack feedBack){

        feedBack.setId(UUID.randomUUID().toString());
        //设置发送人邮箱
        feedBack.setFbpEmail(getUser().getEmail());
        //设置发送人用户名
        feedBack.setFbpUsername(getUser().getUserName());
        //设置发送人电话
        feedBack.setFbpTelephone(getUser().getTelephone());
        //设置邮件发送时间
        feedBack.setFbDate(new Date());
        //设置发送人公司id
        feedBack.setFbCompanyId(getCompanyId());
        feedBack.setIsRead("0");
        //设置发送人等级
        feedBack.setFbDegree(Integer.toString(getUser().getDegree()));
        //邮件读状态,默认未读，不需设置
        //设置标记   0代表个人发的
        feedBack.setRemark("2");

        //点击提交留言后，页面上应显示一句提示：留言已成功提交！请等待回复！
        request.setAttribute("info","留言已成功提交！请等待回复！");

        feedService.add(feedBack);
        return "system/feedback/feedSuccess";
    }

    /**
     *2.留言查询
        2.1 企业管理员 ：根据companyId查询本企业下的所有留言，并进行处理(留言者的companyId=该企业管理员的companyId)
        2.2 SaaS管理员 ：根据degree查询所有企业管理员的留言，并进行处理（degree=1）
     */
     @RequestMapping(value = "/findMessage",name = "查询所有留言")
     public  String  findMessage(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "3") int size){

        //1.先判断当前用户是企业管理员还是SaaS管理员
        //0-saas 管理员   1-企业管理员

        //List<FeedBack> list = null;
         PageInfo info = null;
         User loginUser =(User) session.getAttribute("loginUser");
         //1.1如此人是企业管理员 ：根据companyId查询本企业下的所有留言，并进行处理

        if (loginUser.getDegree()==1){

           info = feedService.findAllByCompanyId(loginUser.getEmail(),loginUser.getCompanyId(),page,size);
        }
        //1.2此人是SaaS管理员：根据degree查询所有企业管理员的留言，并进行处理
        if (loginUser.getDegree()==0){

            info = feedService.findByDegree(1,page,size);
        }
        //System.out.println(list);
        session.setAttribute("page",info);
        //将数据放到session中，并跳转到查询所有留言页面
        return "system/feedback/message-list";

    }

    /**
     * 3.相关领导回复留言（修改--添加修改人姓名-内容）---已完成
     */
    @RequestMapping(value = "/responseMessage",name = "回复留言")
    public  String responseMessage(FeedBack feedBack){

        //根据页面隐藏域中带过来的留言id进行查询
        //FeedBack feedBack = feedService.findById(id);
        //FeedBack feedBack = (FeedBack) session.getAttribute("feedBack");
        feedBack.setIsRead("1");
        feedBack.setHandate(new Date());
        feedBack.setHandlername(getUser().getUserName());
        //feedBack.setHandmethod(handmethod);
        feedService.update(feedBack);
        return  "system/feedback/message-list";
    }

    @RequestMapping(value = "/edit",name = "跳转到回复留言页面")
    public  String edit(String id){

        //根据页面隐藏域中带过来的留言id进行查询
        FeedBack feedBack = feedService.findById(id);
        session.setAttribute("feedBack",feedBack);
         return  "system/feedback/message-edit";
    }
///system/feed/findMySessage.do
    @RequestMapping(value = "/findMySessage",name="查看自己的留言，带处理方法")
    public  String findMySessage(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "3")int size) {

        PageInfo info = feedService.findMySessage(getUser().getEmail(),page,size);
        session.setAttribute("page",info);
        return  "system/feedback/Mymessage-list";
    }

   /* @RequestMapping(value = "/totalMessage",name = "查询符合条件的邮件个数")
    //返回结果直接写入到responseBody中
    public String  totalMessage() throws IOException {

         List<FeedBack> list = null;
         User loginUser =(User) session.getAttribute("loginUser");
         //企业管理员---根据公司id查询
         if (loginUser.getDegree()==1){

             list = feedService.findTotalMessageByCompanyId(loginUser.getCompanyId());
         }
         //SaaS管理员---根据degree查询
         if (loginUser.getDegree()==0){

             list = feedService.findTotalMessageByDegree(1);
         }
         //将sum转成json传入前端
        //String json = JSON.toJSONString(sum);
         //取得流向JSP传递数据
        //response.setContentType("text/html;charset=UTF-8");
        //response.getWriter().println(json);
        //response.reset();
        session.setAttribute("list",list);
        return "/home/header";
    }
*/
}
